#ifndef LIT_STANDALONE
#pragma once
#ifndef __LIT__CAMERA__CONTROLLER_PRIVATES_INCLUDED__HH__
#define __LIT__CAMERA__CONTROLLER_PRIVATES_INCLUDED__HH__

#include <Ogre.h>
#include <OIS.h>
#include "LitPrerequisites.h"

namespace Lit
{
	class CameraController;
	class LIT_API CameraControllerPrivates
	{
	protected:
		Ogre::Camera*	mCam;
		Ogre::Real		mMass;
		Ogre::Real		mMaxSpeed;
		Ogre::Real		mMouseSpeed;
		Ogre::Real		mSpeedFactor;
		OIS::Keyboard*	mKeyboard;
		friend class CameraController;
		
		void setCamera( Ogre::Camera * c );
		void setMass( Ogre::Real m );
		void setMaxSpeed( Ogre::Real speed );
		void setMouseSpeed( Ogre::Real speed );
		void setSpeedFactor( Ogre::Real factor );
		
	public:
		CameraControllerPrivates( );
		CameraControllerPrivates(
			Ogre::Camera*	cam,
			Ogre::Real		mass = 50.0f,
			Ogre::Real		maxspeed=10.0f,
			Ogre::Real		mousespeed=0.10f,
			Ogre::Real		speedfactor=1.0f
		);
		CameraControllerPrivates( const CameraControllerPrivates& rk );
		virtual ~CameraControllerPrivates();
		
		CameraControllerPrivates& operator=( const CameraControllerPrivates& rk );
		CameraControllerPrivates* operator->( );
		CameraControllerPrivates& operator*( );

		CameraControllerPrivates& assign( const CameraControllerPrivates& rk );

		Ogre::Camera* camera() const;
		Ogre::Real mass() const;
		Ogre::Real maxSpeed() const;
		Ogre::Real mouseSpeed() const;
		Ogre::Real speedFactor() const;
	};

};

#endif
#endif